package chenji.yourticket.inventory;

import java.util.HashMap;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;

/**
 * 这个类的作用呢就是在玩家开启YourTicket插件的Inventory时，进行记录，在Click监听事件中优先判断+取消事件。
 * 以防Click事件中出现Exception导致玩家直接拿掉物品。
 * 
 * @author ChenJi
 *
 */
public class InventoryManager {
	public enum OpeningInventoryType {
		ModelManager, EditorManager, PressManager;
	}

	private HashMap<Player, OpeningInventoryType> opening = new HashMap<Player, OpeningInventoryType>();

	/**
	 * 检测这个玩家是否是在打开着YourTicket的Inventory
	 * 
	 * @param p
	 *            玩家
	 * @return 是否打开
	 */
	public boolean isOpening(Player p) {
		return this.opening.containsKey(p);
	}

	/**
	 * 当玩家关闭Inventory的时候，将记录进行清除。
	 * 
	 * @param p
	 */
	public void closeInventory(Player p) {
		this.opening.remove(p);
	}

	/**
	 * 玩家打开Inventory的方法。
	 * 
	 * @param p
	 * @param inv
	 */

	public void openInventory(Player p, Inventory inv, OpeningInventoryType type) {
		p.closeInventory();
		p.openInventory(inv);
		this.opening.put(p, type);
	}

	public OpeningInventoryType getOpeningInventoryType(Player p) {
		return this.opening.get(p);
	}

	public void unload() {
		for (Player p : this.opening.keySet()) {
			p.closeInventory();
		}
	}

}
